/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package FACTURAS;

import CONTROLES.Conexion;
import UTILITARIOS.Fecha;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Calendar;

/**
 *
 * @author VICENTE
 */
public class ControlDosificacion {

    public ControlDosificacion(){

    }

    public boolean RegistrarDosificacion(Dosificacion d){
        Conexion conection = new Conexion();
        try{
          Connection conectado = conection.getConexion();
          String sql = "UPDATE dosificacion_facturas SET estado='CERRADA' WHERE id_sucursal = '"+d.getIdSucursal()+"' AND estado = 'ACTIVA';"
                  + "INSERT INTO dosificacion_facturas(llave, numero_autorizacion, fecha_limite_emision, estado, id_sucursal) VALUES ('"+d.getLlave()+"','"+d.getNumAutorizacion()+"','"+d.getFechaLimite()+"','"+d.getEstado()+"','"+d.getIdSucursal()+"');";
          PreparedStatement psc = conectado.prepareStatement(sql);
          psc.executeUpdate();
          psc.close();          
        }catch (SQLException em) {
            System.out.println("Error al Registrar la DOSIFICACION de facturas en la base de datos"+em.getLocalizedMessage() );
            return false;
        }
            return true;
    }
    
    public Dosificacion getDosificacion(int id){
        Conexion conection = new Conexion();
        Dosificacion dosificacion = null;
       try{
          Connection conectado = conection.getConexion();
          PreparedStatement psc = conectado.prepareStatement("select * from dosificacion_facturas where id_dosificacion ='"+id+"';");
          ResultSet respEmp = psc.executeQuery();
          while (respEmp.next()){

                dosificacion= new Dosificacion();
                dosificacion.setIdDosificacion(respEmp.getInt(1));
                dosificacion.setLlave(respEmp.getString(2));
                dosificacion.setNumAutorizacion(respEmp.getString(3));
                dosificacion.setFechaLimite(respEmp.getDate(4));
                dosificacion.setEstado(respEmp.getString(5));
                dosificacion.setIdSucursal(respEmp.getInt(6));
            }

        }catch (SQLException em) {
            System.out.println("error al Recuperar la dosificacion de la base de datos"+em.getLocalizedMessage() );            
        }
            return dosificacion;
    }

    public Dosificacion DosificacionActiva(int IdSucursal){
        Fecha fecha = new Fecha();
        Conexion conection = new Conexion();
        Dosificacion dosificacion = new Dosificacion();;
       try{
          Connection conectado = conection.getConexion();
          PreparedStatement psc = conectado.prepareStatement("select * from dosificacion_facturas where estado ='ACTIVA' AND id_sucursal = '"+IdSucursal+"' AND fecha_limite_emision >='"+fecha.getFechaDate()+"'");
          ResultSet respEmp = psc.executeQuery();
          if(respEmp.next()){
            dosificacion.setIdDosificacion(respEmp.getInt(1));
            dosificacion.setLlave(respEmp.getString(2));
            dosificacion.setNumAutorizacion(respEmp.getString(3));
            dosificacion.setFechaLimite(respEmp.getDate(4));
            dosificacion.setEstado(respEmp.getString(5));
            dosificacion.setIdSucursal(respEmp.getInt(6));

            return dosificacion;
           }

        }catch (SQLException em) {
            System.out.println("error al Recuperar la dosificacion de la base de datos"+em.getLocalizedMessage() );            
        }
            return null;
    }

    public boolean HayDosificacionActiva(int IdSucursal){
        Conexion conection = new Conexion();
        Calendar f = Calendar.getInstance();
        f.set(f.get(Calendar.YEAR), f.get(Calendar.MONTH), f.get(Calendar.DATE), 0, 0, 0);
        int r = 0;
       try{
            Connection conectado = conection.getConexion();
            PreparedStatement psc = conectado.prepareStatement("select * from dosificacion_facturas where estado ='ACTIVA' AND fecha_limite_emision >= '"+f.getTime()+"' AND id_sucursal = '"+IdSucursal+"';");
            ResultSet respEmp = psc.executeQuery();
            while (respEmp.next()){
              r++;
            }
            if(r>0)
                return true;
            else
                return false;
        }catch (SQLException em) {
            System.out.println("ERROR al Verificar si existe dosificacion activa:"+em.getLocalizedMessage() );
            return false;
        }            
    }
}
